package api

type CreatePaymentsReq struct {
	Id               string `json:"id"`
	Currency         string `json:"currency" binding:"required"`
	BeneficiaryId    string `json:"beneficiary_id" binding:"required"`
	Amount           string `json:"amount" binding:"required"`
	Reason           string `json:"reason" binding:"required"`
	Reference        string `json:"reference" binding:"required"`
	PaymentType      string `json:"payment_type"`
	PaymentDate      string `json:"payment_date"`
	PayerEntityType  string `json:"payer_entity_type"`
	PayerCompanyName string `json:"payer_company_name"`
	PayerCountry     string `json:"payer_country"`
	PayerAddress     string `json:"payer_address"`
	PayerCity        string `json:"payer_city"`
	PayerFirstName   string `json:"payer_first_name"`
	PayerLastName    string `json:"payer_last_name"`
	PayerDateOfBirth string `json:"payer_date_of_birth"`
}

type ValidatePaymentRes struct {
	ValidationResult string `json:"validation_result"`
}

type PayRequirementsReq struct {
	PayerCountry    string `json:"payer_country" binding:"required"`
	PayerEntityType string `json:"payer_entity_type"`
	PaymentType     string `json:"payment_type"`
	Currency        string `json:"currency"`
}

type PayRequirementsRes struct {
	Details []PayRequirementsDetail `json:"details"`
}

type PayRequirementsDetail struct {
	Currency                      string                          `json:"currency"`
	PayerEntityType               string                          `json:"payer_entity_type"`
	PaymentType                   string                          `json:"payment_type"`
	PayRequirementsRequiredFields []PayRequirementsRequiredFields `json:"required_fields"`
	PayerIdentificationType       string                          `json:"payer_identification_type,omitempty"`
}

type PayRequirementsRequiredFields struct {
	Name           string `json:"name"`
	ValidationRule string `json:"validation_rule"`
}

type OperatorPaymentReq struct {
	PaymentId        string `json:"payment_id"`
	Currency         string `json:"currency" binding:"required"`
	BeneficiaryId    string `json:"beneficiary_id" binding:"required"`
	Amount           string `json:"amount" binding:"required"`
	Reason           string `json:"reason" binding:"required"`
	Reference        string `json:"reference" binding:"required"`
	PaymentType      string `json:"payment_type"`
	PaymentDate      string `json:"payment_date"`
	PayerEntityType  string `json:"payer_entity_type"`
	PayerCompanyName string `json:"payer_company_name"`
	PayerCountry     string `json:"payer_country"`
	PayerAddress     string `json:"payer_address"`
	PayerCity        string `json:"payer_city"`
	PayerFirstName   string `json:"payer_first_name"`
	PayerLastName    string `json:"payer_last_name"`
	PayerDateOfBirth string `json:"payer_date_of_birth"`
	Method           string `json:"method" binding:"required"`
}

type OperatorPaymentRes struct {
	Id                         string `json:"id"`
	Amount                     string `json:"amount"`
	BeneficiaryId              string `json:"beneficiary_id"`
	Currency                   string `json:"currency"`
	Reference                  string `json:"reference"`
	Reason                     string `json:"reason"`
	Status                     string `json:"status"`
	CreatorContactId           string `json:"creator_contact_id"`
	PaymentType                string `json:"payment_type"`
	PaymentDate                string `json:"payment_date"`
	TransferredAt              string `json:"transferred_at"`
	AuthorisationStepsRequired string `json:"authorisation_steps_required"`
	LastUpdaterContactId       string `json:"last_updater_contact_id"`
	ShortReference             string `json:"short_reference"`
	ConversionId               string `json:"conversion_id"`
	FailureReason              string `json:"failure_reason"`
	PayerId                    string `json:"payer_id"`
	PayerDetailsSource         string `json:"payer_details_source"`
	PaymentGroupId             string `json:"payment_group_id"`
	UniqueRequestId            string `json:"unique_request_id"`
	FailureReturnedAmount      string `json:"failure_returned_amount"`
	UltimateBeneficiaryName    string `json:"ultimate_beneficiary_name"`
	PurposeCode                string `json:"purpose_code"`
	ChargeType                 string `json:"charge_type"`
	FeeAmount                  string `json:"fee_amount"`
	FeeCurrency                string `json:"fee_currency"`
	ReviewStatus               string `json:"review_status"`
}
